package com.yyw.foodie.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yyw.foodie.bo.orders.SubmitOrderBo;
import com.yyw.foodie.pojo.OrdersEntity;
import com.yyw.foodie.utils.PagedGridResult;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * <p>
 * 订单表; 服务类
 * </p>
 *
 * @author yiyw
 * @since 2021-05-22
 */
public interface OrdersService extends IService<OrdersEntity> {

    /**
     * 创建订单
     *
     * @param submitOrderBo
     * @return
     */
    String createOrder(SubmitOrderBo submitOrderBo);

    /**
     * 分页获取用户中心订单信息
     *
     * @param userId      用户ID
     * @param orderStatus 订单状态
     * @param page        当前页
     * @param pageSize    总条数
     * @return 订单信息
     */
    PagedGridResult getOrderInfo(String userId, Integer orderStatus, Integer page, Integer pageSize);

    /**
     * 模拟商家发货,只是修改一个状态
     *
     * @param orderId
     * @return
     */
    Boolean deliver(String orderId);

    /**
     * 删除订单信息
     *
     * @param userId  用户订单
     * @param orderId 订单ID
     * @return
     */
    Boolean deleteOrder(String userId, String orderId);

    /**
     * 用户确认收货
     *
     * @param userId
     * @param orderId
     * @return
     */
    Boolean confirmReceive(String userId, String orderId);

    /**
     * 定时关闭为支付的订单
     */
    void closeOrder();

    /**
     * 分页获取订单最新的动向
     *
     * @param userId   用户ID
     * @param page     分页页数
     * @param pageSize 显示条数
     * @return
     */
    PagedGridResult getOrderTrendPage(String userId, Integer page, Integer pageSize);

    /**
     * 订单创建成功，删除缓存内的购物车数据,以及cookie的数据
     *
     * @param itemSpecIds 要删除的skuID
     * @param userId      用户ID
     * @param request
     * @param response
     */
    void removeCatBySku(String itemSpecIds, String userId, HttpServletRequest request, HttpServletResponse response);
}
